package com.hqully.labmanage.mapper;

import com.hqully.labmanage.domain.dto.StuInfoDTO;
import com.hqully.labmanage.domain.entity.StuInfo;
import com.hqully.labmanage.domain.vo.StuInfoTree;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 针对数据库表[stuInfo]的操作
 * </p>
 *
 * @author hqully <br>
 * @entity {@link StuInfo}
 * @date 2022-10-10 19:43:53 <br>
 * @version 1.0
 */
@Mapper
public interface StuInfoMapper {

    /**
     * <p>
     *     获取学生学籍信息树形表
     * </p>
     * @param code 信息节点代码,若要查询整个信息树,则传入[1]
     * @return {@link StuInfoTree} 学籍信息树
     * @date 2022-10-10 20:18:48 <br>
     * @author hqully <br>
     */
    StuInfoTree getInfoTree(@Param("code") String code);

    /**
     * <p>
     * 根据[stuInfoDTO]的参数条件查询学籍信息列表
     * </p>
     *
     * @param stuInfoDTO 查询参数
     * @return {@link List<StuInfoDTO>} 学籍信息DTO列表
     * @date 2022-10-10 19:43:53 <br>
     * @author hqully <br>
     */
    List<StuInfoDTO> listStuInfos(StuInfoDTO stuInfoDTO);

    /**
     * <p>
     * 添加学籍信息
     * </p>
     *
     * @param stuInfo 学籍信息实体类
     * @return {@link int}
     * @date 2022-10-10 19:43:53 <br>
     * @author hqully <br>
     */
    int addStuInfo(StuInfo stuInfo);

    /**
     * <p>
     * 更新学籍信息
     * </p>
     *
     * @param stuInfo 学籍信息
     * @return {@link int}
     * @date 2022-10-10 19:43:53 <br>
     * @author hqully <br>
     */
    int updateStuInfo(StuInfo stuInfo);
    
    /**
     * <p>
     * 通过[id]删除学籍信息
     * </p>
     *
     * @param id 学籍信息id
     * @return {@link int}
     * @date 2022-10-10 19:43:53 <br>
     * @author hqully <br>
     */
    int deleteStuInfoById(@Param("id") Integer id);

}

